home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga News 95
/
Amiga News 95.iso
/
dpat
/
dpat05
/
coords
/
coords.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-02-23
|
20KB
|
378 lines
/******************************************************************************/
/* */
/* Coords */
/* */
/* Ce programme affiche en permanence la position du pointeur */
/* ............................................. */
/* */
/* Compilé avec Lattice 5.04 */
/* */
/******************************************************************************/
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <string.h>
#include <graphics/gfx.h>
#include <graphics/gfxbase.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <libraries/dos.h> /* Ces deux fichiers sont necessaire */
#include <proto/dos.h> /* pour linker avec `cback.o' */
#include <proto/exec.h>
long _stack=4000; /* Initialisations pour cback.o */
char *_procname="Coords";
long _priority=-1; /* priorite -1 suffit largement */
long _BackGroundIO=0;
#define RPORT Fenetre->RPort /* Raccourci pour acceder au rastport */
#define ECRAN 0
#define FENETRE 1
struct IntuitionBase far *IntuitionBase; /* Pour ouvrir Intuition et*/
struct GfxBase far *GfxBase; /* Graphics */
struct Window *Fenetre; /* Notre fenetre */
struct IntuiMessage *Message; /* Pour recevoir des messages */
struct Menu Menus; /* 1 menu */
struct MenuItem Items[3]; /* 3 Items */
struct MenuItem SubItem; /* 1 SubIem pour ImageSignature */
struct IntuiText Texts[3]; /* 3 IntuiTexts pour les Items */
char *IString[3]={
" Ecran Actif"," Fenetre Active","Info"
}; /* Les points du menu */
char ascoord[3]; /* Tableau char pour coord->ASCII */
int lastx,lasty; /* Pour ne pas reecrire inutilement */
BOOL flag=0; /* Variable pour relativite de la mesure */
UWORD chip ImageSignature_data[16 * 30 * 2] = {
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0x9fff,0xffff,0xffff,0xffff,0xffff,0x9fff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xff7f,0x7fff,0xffff,0xffff,0x3fff,0xffff,0xffff,0xffff,0xffff,0x3fff,0xffff,0xffff,0xfffd,0xfdff,0xffff,
0xffff,0xffbe,0xffff,0xffff,0xfffe,0x7fff,0xffff,0xffff,0xffff,0xfffe,0x7cff,0xffff,0xffff,0xfffe,0xfbff,0xffff,
0xffff,0xfedd,0xbfff,0xfffe,0x0703,0xffff,0xffff,0xfffc,0x1fff,0xffff,0xf8ff,0xffff,0xffff,0xfffb,0x76ff,0xffff,
0xfffd,0xffeb,0xffdf,0xffff,0x0fc4,0x1038,0x1c03,0xffff,0x0fe0,0x861c,0x1000,0xe01f,0xffff,0xf7ff,0xafff,0x7fff,
0xfffd,0xbf3e,0x7edf,0xffff,0x8fce,0x187c,0x38e3,0xffff,0x87f0,0x208e,0x1f8f,0xc71f,0xffff,0xf6fc,0xf9fb,0x7fff,
0xfffe,0x73aa,0xe73f,0xffff,0x8fcf,0x1c7e,0x71e3,0xffff,0x03f8,0x71c7,0x1e3f,0x8f1f,0xffff,0xf9ce,0xab9c,0xffff,
0xffff,0x29d5,0xca7f,0xffff,0x8fcf,0x1c7e,0x63e3,0xfffe,0x61f8,0xf1c7,0x1c7f,0x1f1f,0xffff,0xfca7,0x5729,0xffff,
0xffc8,0x79ff,0xcf09,0xffff,0xc79f,0x1e3c,0xe3e3,0xfff9,0xc0f8,0xf1c7,0x18ff,0x1f1f,0xffff,0x21e7,0xff3c,0x27ff,
0xfff7,0x73ff,0xe777,0xffff,0xe33f,0x1f19,0xf1e3,0xfff1,0x9878,0xf1c7,0x1c7f,0x8f1f,0xffff,0xddcf,0xff9d,0xdfff,
0xffff,0x07ff,0xf07f,0xffff,0xf07f,0x1f83,0xf8e0,0x7ff0,0x7c38,0xf1c7,0x1e3f,0xc703,0xffff,0xfc1f,0xffc1,0xffff,
0xffff,0xffff,0xffff,0xffff,0xf8ff,0x1fc7,0xfc00,0xfff9,0xfe18,0xe38f,0x1f87,0xe007,0xffff,0xffff,0xffff,0xffff,
0xffff,0x07ff,0xf07f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xfff1,0xffff,0xffff,0xfc1f,0xffc1,0xffff,
0xfff7,0x73ff,0xe777,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xfe78,0xffff,0xffff,0xddcf,0xff9d,0xdfff,
0xffc8,0x3dff,0xde09,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf871,0xffff,0xffff,0x20f7,0xff78,0x27ff,
0xffff,0x6380,0xe37f,0xe007,0xffff,0xffff,0xffff,0xe007,0xffff,0xfcff,0xff03,0xf1ff,0xffff,0xfd8e,0x038d,0xffff,
0xfffe,0xff3e,0x7fbf,0xe003,0xffff,0xffff,0xffff,0xe007,0xffff,0xf87f,0xffff,0xf1ff,0xffff,0xfbfc,0xf9fe,0xffff,
0xfffd,0xbfaa,0xfedf,0xf1e1,0xffff,0xffff,0xffff,0xc7c7,0xffff,0xf87f,0xffff,0xf3ff,0xffff,0xf6fe,0xabfb,0x7fff,
0xffff,0xffc9,0xffff,0xf1e0,0x010c,0x200f,0x01ff,0x8fe6,0x0218,0x6038,0x6100,0x61e0,0x200f,0xffff,0x27ff,0xffff,
0xffff,0xfedd,0xbfff,0xf001,0x000c,0x2006,0x00ff,0xcffc,0x0018,0x7378,0x6100,0x21c0,0x0007,0xfffb,0x76ff,0xffff,
0xffff,0xff3e,0x7fff,0xf20e,0xdb8e,0x31c6,0x78ff,0x9ffc,0xf11c,0x79fc,0x7186,0x31c8,0x10c7,0xfffc,0xf9ff,0xffff,
0xffff,0xffff,0xffff,0xf5ea,0xbfce,0xbdf6,0x3eff,0xefe4,0x7d9d,0x7afe,0x75ef,0xf9c2,0x19ff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xfbf7,0xffbe,0xb7df,0xfbff,0x97df,0xf77d,0x7d8d,0xf5bf,0xf7ff,0x97ff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xe408,0x9ff1,0xceba,0xc7ff,0xd01d,0x8fe3,0xba2f,0x8e77,0xeed8,0x6eff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xf7ff,0xffff,0xfeff,0xfdff,0xf7ff,0xfbfe,0xffff,0xfbf7,0xffff,0xbfff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x6000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0xf000,0x0000,0x0000,0x0000,0x0000,0xf000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0080,0x8000,0x0000,0x0001,0xe000,0x0000,0x0000,0x0000,0x0001,0xe300,0x0000,0x0000,0x0002,0x0200,0x0000,
0x0000,0x0041,0x0000,0x0001,0xf8ff,0xc000,0x0000,0x0003,0xe000,0x0003,0xc780,0x0000,0x0000,0x0001,0x0400,0x0000,
0x0000,0x0122,0x4000,0x0003,0xfdff,0xefc7,0xe3fc,0x0007,0xf01f,0x79e3,0xefff,0x1fe0,0x0000,0x0004,0x8900,0x0000,
0x0002,0x0014,0x0020,0x0001,0xf8ff,0xffef,0xf7fe,0x0003,0xf83f,0xfff7,0xffff,0xbff0,0x0000,0x0800,0x5000,0x8000,
0x0002,0x40c1,0x8120,0x0000,0xf87b,0xffc7,0xeffe,0x0000,0xfc1f,0xfffb,0xffff,0x7ff0,0x0000,0x0903,0x0604,0x8000,
0x0001,0x8c55,0x18c0,0x0000,0xf879,0xf7c3,0xdf3e,0x0001,0xfe0f,0xdf7d,0xf3f0,0xf9f0,0x0000,0x0631,0x5463,0x0000,
0x0000,0xd62a,0x3580,0x0000,0xf879,0xf7c3,0xfe3e,0x0007,0xff0f,0x9f7d,0xf7c1,0xf1f0,0x0000,0x0358,0xa8d6,0x0000,
0x0037,0x8600,0x30f6,0x0000,0x7cf1,0xf3e7,0xbe3e,0x000f,0xff8f,0x9f7d,0xff81,0xf1f0,0x0000,0xde18,0x00c3,0xd800,
0x0008,0x8c00,0x1888,0x0000,0x3fe1,0xf1ff,0x1f3f,0x801f,0xffcf,0x9f7d,0xf7c0,0xf9fc,0x0000,0x2230,0x0062,0x2000,
0x0000,0xf800,0x0f80,0x0000,0x1fc1,0xf0fe,0x0fff,0xc01f,0xe7ef,0x9f7d,0xf3f8,0x7ffe,0x0000,0x03e0,0x003e,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0f81,0xf07c,0x07ff,0x800f,0x83ff,0xbef9,0xf1fe,0x3ffc,0x0000,0x0000,0x0000,0x0000,
0x0000,0xf800,0x0f80,0x0000,0x0700,0xe038,0x03ff,0x0006,0x01e7,0x1c70,0xe1ff,0x1ff8,0x0000,0x03e0,0x003e,0x0000,
0x0008,0x8c00,0x1888,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07cf,0x8000,0x0000,0x2230,0x0062,0x2000,
0x0037,0xc200,0x21f6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0fff,0x0000,0x0000,0xdf08,0x0087,0xd800,
0x0000,0x9c7f,0x1c80,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07fe,0x0000,0x0000,0x0271,0xfc72,0x0000,
0x0001,0x00c1,0x8040,0x1ff8,0x0000,0x0000,0x0000,0x1ff8,0x0000,0x0300,0x00fc,0x0e00,0x0000,0x0403,0x0601,0x0000,
0x0002,0x4055,0x0120,0x0e1c,0x0000,0x0000,0x0000,0x3838,0x0000,0x0700,0x0000,0x0e00,0x0000,0x0901,0x5404,0x8000,
0x0000,0x0036,0x0000,0x0e1c,0x0000,0x0000,0x0000,0x7018,0x0000,0x0700,0x0000,0x0000,0x0000,0x0000,0xd800,0x0000,
0x0000,0x0122,0x4000,0x0e1f,0xfef3,0xdff0,0xfe00,0x7001,0xfde7,0x9fc7,0x9eff,0x9e1f,0xdff0,0x0004,0x8900,0x0000,
0x0000,0x00c1,0x8000,0x0ff9,0xe771,0xce39,0xc700,0x7003,0x8ee3,0x8703,0x8e79,0xce38,0xef38,0x0003,0x0600,0x0000,
0x0000,0x0000,0x0000,0x0e1d,0xc071,0xce39,0xc700,0x7003,0x8ee3,0x8703,0x8e70,0x0e3f,0xee00,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0e1d,0xc071,0xce39,0xc700,0x701b,0x8ee3,0x8703,0x8e70,0x0e38,0x0e00,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0e1d,0xc071,0xce39,0xc700,0x3833,0x8ee3,0x8773,0x8e70,0x0e38,0x6e00,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x1ffb,0xe03f,0x7f7c,0xfe00,0x1fe1,0xfc7f,0xc3e1,0xfff8,0x1f1f,0xdf00,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};
struct Image ImageSignature = {
0, 0, 256, 30, 2, &ImageSignature_data[0], 3, 0, NULL};
/* Datas et structure pour signature */
struct NewWindow NouvelleFenetre = {
0,0, /* XY relativement a l'angle superieur gauche de l'ecran */
180,10, /* largeur,hauteur */
0,1, /* couleurs(detail,block) */
CLOSEWINDOW|MENUPICK, /* Type de message desire(IDCMP) */
WINDOWDRAG|WINDOWCLOSE, /* autres flags */
NULL, /* premier gadget */
NULL, /* CHECKMARK personelle */
"Coords:X=000 Y=000", /* Titre */
NULL, /* pointeur sur un customscreen */
NULL, /* pointeur sur une custom bitmap */
5,5, /* Tailles minimales */
640,200, /* Tailles maximales */
WBENCHSCREEN /* Type de l'ecran de destination */
};
char *stpcpy();
VOID ModTitre();
VOID OpenAll();
VOID CloseIt();
VOID BuildUpMenu();
VOID DetectMess();
/******************************************************************************/
/* */
/* C'est partiiii !!! */
/* */
/******************************************************************************/
VOID _main()
{
OpenAll(); /* On prepare tout */
FOREVER /* Pour toujours */
{
ModTitre(); /* On ecrit les coordonnees actuelles */
DetectMess(); /* des messages en attente ? */
}
}
/******************************************************************************/
/* */
/* Cette fonction ouvre les librairies et la fenetre et construit le menu */
/*----------------------------------------------------------------------------*/
/* Parametres en entrée :aucun */
/*----------------------------------------------------------------------------*/
/* Valeurs de réponse :aucun */
/******************************************************************************/
VOID OpenAll()
{
IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0);
if (!IntuitionBase)CloseIt();
GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0);
if (!GfxBase)CloseIt();
Fenetre=(struct Window *)OpenWindow(&NouvelleFenetre);
if (!Fenetre)CloseIt();
BuildUpMenu();
SetMenuStrip(Fenetre,&Menus);
}
/******************************************************************************/
/* */
/* Cette routine ferme tout */
/*----------------------------------------------------------------------------*/
/* Parametres en entrée :aucun */
/*----------------------------------------------------------------------------*/
/* Valeurs de réponse :aucune */
/******************************************************************************/
VOID CloseIt()
{
if(Fenetre)ClearMenuStrip(Fenetre); /* On ne ferme que ce */
if(Fenetre)CloseWindow(Fenetre); /* qui existe !!! */
if(GfxBase)CloseLibrary((struct Library *)GfxBase);
if(IntuitionBase)CloseLibrary((struct Library *)IntuitionBase);
exit(0L); /* sortie en douceur */
}
/******************************************************************************/
/* */
/* Cette detecte un message d'Intuition et reagit */
/*----------------------------------------------------------------------------*/
/* Parametres en entrée :aucun */
/*----------------------------------------------------------------------------*/
/* Valeurs de réponse :aucune */
/******************************************************************************/
VOID DetectMess()
{
int Class,Code;
if(Message=(struct IntuiMessage *)GetMsg(Fenetre->UserPort))
{
Class=Message->Class; /* si il y a un message */
Code=Message->Code; /* on recupere les valeurs */
ReplyMsg((struct Message *)Message); /* interresantes et on repond */
switch(Class) /* Traitement du message */
{
case MENUPICK:
if(Code!=MENUNULL)
switch(MENUNUM(Code))
{
case 0:
switch(ITEMNUM(Code))
{
case 0:
flag=ECRAN;
break;
case 1:
flag=FENETRE;
}
}
break;
case CLOSEWINDOW:
CloseIt();
}
}
}
/******************************************************************************/
/* */
/* Cette routine modifie le titre de la fenetre en fonction du pointeur */
/* */
/*----------------------------------------------------------------------------*/
/* Parametres en entrée :aucun */
/*----------------------------------------------------------------------------*/
/* Valeurs de réponse :aucune */
/******************************************************************************/
VOID ModTitre()
{
int x,y,i;
char *p;
static char *Titre="Coords:X=000 Y=000";
if(flag==ECRAN) /* Determine la relativite de la mesure */
{
x=IntuitionBase->ActiveScreen->MouseX;
y=IntuitionBase->ActiveScreen->MouseY;
}
else
{
x=IntuitionBase->ActiveWindow->MouseX;
y=IntuitionBase->ActiveWindow->MouseY;
}
if((x!=lastx)||(y!=lasty)) /* la mesure a change ? */
{
p=stpcpy(Titre,"Coords:X="); /* Construire la */
stci_d(ascoord,x); /* nouvelle chaine */
for(i=0;i<3-strlen(ascoord);++i)
p=stpcpy(p," ");
p=stpcpy(p,ascoord);
p=stpcpy(p," Y=");
stci_d(ascoord,y);
for(i=0;i<3-strlen(ascoord);++i)
p=stpcpy(p," ");
p=stpcpy(p,ascoord);
Move(RPORT,32,1+RPORT->TxBaseline); /* ecrire la */
Text(RPORT,Titre,strlen(Titre)); /* chaine */
lastx=x; /* se souvenir pour eviter */
lasty=y; /* de calculer et d'ecrire */
} /* deux fois la meme chaine */
}
/******************************************************************************/
/* */
/* Cette fonction construit un menu et ses entrées */
/*----------------------------------------------------------------------------*/
/* Parametres en entrée :aucun */
/*----------------------------------------------------------------------------*/
/* Valeurs de réponse :aucune */
/* Rques:il faut définir BuilDUpMenu(),struct Menu Menus, */
/* struct MenuItem Items,struct IntuiText Texts,char *IString... */
/* dans le prg */
/******************************************************************************/
VOID BuildUpMenu()
{
Items[0].LeftEdge=1; /* Item 1 */
Items[0].TopEdge=0;
Items[0].Width=120+CHECKWIDTH; Items[0].Height=10;
Items[0].Flags=ITEMTEXT|ITEMENABLED|CHECKIT|CHECKED|HIGHBOX;
Items[0].MutualExclude=2;
Items[0].ItemFill=(APTR)&Texts[0];
Items[0].SelectFill=NULL;
Items[0].Command=NULL;
Items[0].SubItem=NULL;
Items[0].NextSelect=NULL;
Texts[0].FrontPen=3; Texts[0].BackPen=1;
Texts[0].DrawMode=JAM1;
Texts[0].LeftEdge=1; Texts[0].TopEdge=1;
Texts[0].ITextFont=NULL;
Texts[0].IText=IString[0];
Texts[0].NextText=NULL;
Items[1].LeftEdge=1; /* Item 2 */
Items[1].TopEdge=10;
Items[1].Width=120+CHECKWIDTH; Items[1].Height=10;
Items[1].Flags=ITEMTEXT|ITEMENABLED|CHECKIT|HIGHBOX;
Items[1].MutualExclude=1;
Items[1].ItemFill=(APTR)&Texts[1];
Items[1].SelectFill=NULL;
Items[1].Command=NULL;
Items[1].SubItem=NULL;
Items[1].NextSelect=NULL;
Texts[1].FrontPen=3; Texts[1].BackPen=1;
Texts[1].DrawMode=JAM1;
Texts[1].LeftEdge=1; Texts[1].TopEdge=1;
Texts[1].ITextFont=NULL;
Texts[1].IText=IString[1];
Texts[1].NextText=NULL;
Items[2].LeftEdge=1; /* Item 3 */
Items[2].TopEdge=20;
Items[2].Width=120; Items[2].Height=10;
Items[2].Flags=ITEMTEXT|ITEMENABLED|HIGHBOX;
Items[2].MutualExclude=NULL;
Items[2].ItemFill=(APTR)&Texts[2];
Items[2].SelectFill=NULL;
Items[2].Command=NULL;
Items[2].SubItem=&SubItem;
Items[2].NextSelect=NULL;
Texts[2].FrontPen=3; Texts[2].BackPen=1;
Texts[2].DrawMode=JAM1;
Texts[2].LeftEdge=1; Texts[2].TopEdge=1;
Texts[2].ITextFont=NULL;
Texts[2].IText=IString[2];
Texts[2].NextText=NULL;
SubItem.NextItem=NULL;
SubItem.LeftEdge=120; /* SubItem 1 */
SubItem.TopEdge=0;
SubItem.Width=256; SubItem.Height=30;
SubItem.Flags=ITEMENABLED|HIGHCOMP;
SubItem.MutualExclude=NULL;
SubItem.ItemFill=(APTR)&ImageSignature;
SubItem.SelectFill=NULL;
SubItem.Command=NULL;
SubItem.SubItem=NULL;
SubItem.NextSelect=NULL;
Items[0].NextItem=&Items[1];
Items[1].NextItem=&Items[2];
Menus.NextMenu=NULL; /* Menu */
Menus.LeftEdge=0; Menus.TopEdge=0;
Menus.Width=63; Menus.Height=10;
Menus.Flags=MENUENABLED;
Menus.MenuName="Projets";
Menus.FirstItem=&Items[0];
}